<?php
/**
 * USession.php
 */

/**
 * USession
 * 
 * @package Utility
 * @author Igor Di Paolo <igor.di.paolo@gmail.com>
 */
class USession extends UUtility{
	/**
	 * started
	 * @var boolean
	 */
	private static $started = false;
	/**
	 * Costruttore
	 */
	public function __construct(){
		
		/**
		 * TODO:Aggiungere session_id per permettere l'utilizzo di
		 *      sessioni anche senza cookie, per un utilizzo ottimale
		 *      sarebbe necessaria una classe che costruisce i link e 
		 *      da li inserire automaticamente con una richiesta get o
		 *      post un PHPSESSID
		 * 
		 */
		
		
		if(!self::$started ){
			session_start();
			
			/** 
			 * Per motivi di sicurezza e' conveniente rigenerare l'id della
			 * sessione ogni volta che passa un certo quantitativo di tempo.
			 */
			
			$valore = $this->getParam('s_creata');
			
			if(isset($valore)){
				if(time() - $this->getParam('s_creata') > SESSION_REGENERATE_TIME){
					session_regenerate_id();
					$this->setParam('s_creata',time());
				}
			}else{
				$this->setParam('s_creata',time());
			}
			
			self::$started = true;
		}
		
		parent::__construct();
			
	}
	
	/**
	 * getParam
	 * 
	 * Restituisce il parametro della sessione
	 *  
	 * @param string $name
	 * @return mixed 
	 */
	public function getParam($name) {
		return @$_SESSION[$name];
	}
	
	/**
	 * Imposta un parametro
	 * 
	 * @param string $name
	 * @param mixed $value
	 */
	public function setParam($name,$value) {
		$_SESSION[$name] = $value;
	}
	
	/**
	 * Cancella un parametro
	 * 
	 * @param string $name
	 */
	public function delParam($name) {
		unset($_SESSION[$name]);
	}
	
	
}